{\magtwo Introduction}

One of the major differences between combinatorial computing
and other areas of computing such as statistics, numerical
analysis and linear programming is the use of complex data types. 
Whilst the built-in types, such as integers, reals, vectors, and matrices,
usually suffice in the other areas, combinatorial computing relies heavily 
on types like stacks, queues, dictionaries, sequences, sorted sequences, 
priority queues, graphs, points, segments, $\ldots$
In the fall of 1988, we started a project (called {\bf LEDA} for Library of
Efficient Data types and Algorithms) to build a small, but growing library 
of data types and algorithms in a form which allows them to be used by 
non-experts. We hope that the system will narrow the gap between algorithms
research, teaching, and implementation. The main features of LEDA are:

\beginitem
\item{1)}  
{A clear separation between (abstract) data types and the data structures 
used to implement them.  This distinction is frequently not made in the 
combinatorial algorithms literature, but is crucial for a library.}

\item {2)}  
{Generic data types: Most of the data types in LEDA have type parameters.
For example, a dictionary has a key type $K$ and an information
type $I$ and a specific dictionary type is obtained by setting,
say, $K$ to {\bf int} and $I$ to {\bf real}. }

\item{3)} 
{LEDA is extendible: Users can include own data types either by implementing
data structures from scratch in \CC  or by combining already existing LEDA 
data types. }

\item{4)} 
{Ease of use: All data types and algorithms are precompiled \CC modules 
which can be linked with application programs. }

\enditem

This manual contains the specifications of all data types and algorithms 
currently available in LEDA. Users should be familiar with the \CC 
programming language (see [S86] or [L89]). The main concepts and some 
implementation details of LEDA are described in [MN89]. The manual is 
structured as follows: In chapter one, which is a prerequisite for all
other chapters, we discuss the basic concepts and notations used in LEDA.
The other chapters define the data types and algorithms available in
LEDA and give examples of their use. These chapters can be consulted
independently from one another.

\vfill\eject


\vglue 10cm
\vfill\eject
